home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Utilities / Calc / lib / lucas_chk.cal < prev    next >
Encoding:
Text File  |  1992-02-24  |  32.5 KB  |  1,261 lines  |  [TEXT/????]

  1. /*
  2.  * Copyright (c) 1992 Landon Curt Noll
  3.  * Permission is granted to use, distribute, or modify this source,
  4.  * provided that this copyright notice remains intact.
  5.  *
  6.  * By: Landon Curt Noll
  7.  *     chongo@toad.com  -or-  ...!{pyramid,sun,uunet}!sun!hoptoad!chongo
  8.  *
  9.  *
  10.  * primes of the form h*2^n-1 for 1<=h<200 and 1<=n<1000
  11.  *
  12.  * For all 0 <= i < prime_cnt, h_p[i]*2^n_p[i]-1 is prime.
  13.  *
  14.  * These values were taken from:
  15.  *
  16.  *    "Prime numbers and Computer Methods for Factorization", by Hans Riesel,
  17.  *    Birkhauser, 1985, pp 384-387.
  18.  *
  19.  * This routine assumes that the file "lucas.cal" has been loaded.
  20.  *
  21.  * NOTE: There are several errors in Riesel's table that have been corrected
  22.  *     in this file:
  23.  *
  24.  *        193*2^87-1 is prime
  25.  *        193*2^97-1 is NOT prime
  26.  *        199*2^211-1 is prime
  27.  *        199*2^221-1 is NOT prime
  28.  */
  29.  
  30. global prime_cnt;    /* number of primes in the list */
  31. prime_cnt = 1145;
  32. mat h_p[prime_cnt];    /* h = prime parameters */
  33. mat n_p[prime_cnt];    /* n (exponent) prime parameters */
  34. h_p[0]=1;    n_p[0]=2;
  35. h_p[1]=1;    n_p[1]=3;
  36. h_p[2]=1;    n_p[2]=5;
  37. h_p[3]=1;    n_p[3]=7;
  38. h_p[4]=1;    n_p[4]=13;
  39. h_p[5]=1;    n_p[5]=17;
  40. h_p[6]=1;    n_p[6]=19;
  41. h_p[7]=1;    n_p[7]=31;
  42. h_p[8]=1;    n_p[8]=61;
  43. h_p[9]=1;    n_p[9]=89;
  44. h_p[10]=1;    n_p[10]=107;
  45. h_p[11]=1;    n_p[11]=127;
  46. h_p[12]=1;    n_p[12]=521;
  47. h_p[13]=1;    n_p[13]=607;
  48. h_p[14]=3;    n_p[14]=1;
  49. h_p[15]=3;    n_p[15]=2;
  50. h_p[16]=3;    n_p[16]=3;
  51. h_p[17]=3;    n_p[17]=4;
  52. h_p[18]=3;    n_p[18]=6;
  53. h_p[19]=3;    n_p[19]=7;
  54. h_p[20]=3;    n_p[20]=11;
  55. h_p[21]=3;    n_p[21]=18;
  56. h_p[22]=3;    n_p[22]=34;
  57. h_p[23]=3;    n_p[23]=38;
  58. h_p[24]=3;    n_p[24]=43;
  59. h_p[25]=3;    n_p[25]=55;
  60. h_p[26]=3;    n_p[26]=64;
  61. h_p[27]=3;    n_p[27]=76;
  62. h_p[28]=3;    n_p[28]=94;
  63. h_p[29]=3;    n_p[29]=103;
  64. h_p[30]=3;    n_p[30]=143;
  65. h_p[31]=3;    n_p[31]=206;
  66. h_p[32]=3;    n_p[32]=216;
  67. h_p[33]=3;    n_p[33]=306;
  68. h_p[34]=3;    n_p[34]=324;
  69. h_p[35]=3;    n_p[35]=391;
  70. h_p[36]=3;    n_p[36]=458;
  71. h_p[37]=3;    n_p[37]=470;
  72. h_p[38]=3;    n_p[38]=827;
  73. h_p[39]=5;    n_p[39]=2;
  74. h_p[40]=5;    n_p[40]=4;
  75. h_p[41]=5;    n_p[41]=8;
  76. h_p[42]=5;    n_p[42]=10;
  77. h_p[43]=5;    n_p[43]=12;
  78. h_p[44]=5;    n_p[44]=14;
  79. h_p[45]=5;    n_p[45]=18;
  80. h_p[46]=5;    n_p[46]=32;
  81. h_p[47]=5;    n_p[47]=48;
  82. h_p[48]=5;    n_p[48]=54;
  83. h_p[49]=5;    n_p[49]=72;
  84. h_p[50]=5;    n_p[50]=148;
  85. h_p[51]=5;    n_p[51]=184;
  86. h_p[52]=5;    n_p[52]=248;
  87. h_p[53]=5;    n_p[53]=270;
  88. h_p[54]=5;    n_p[54]=274;
  89. h_p[55]=5;    n_p[55]=420;
  90. h_p[56]=7;    n_p[56]=1;
  91. h_p[57]=7;    n_p[57]=5;
  92. h_p[58]=7;    n_p[58]=9;
  93. h_p[59]=7;    n_p[59]=17;
  94. h_p[60]=7;    n_p[60]=21;
  95. h_p[61]=7;    n_p[61]=29;
  96. h_p[62]=7;    n_p[62]=45;
  97. h_p[63]=7;    n_p[63]=177;
  98. h_p[64]=9;    n_p[64]=1;
  99. h_p[65]=9;    n_p[65]=3;
  100. h_p[66]=9;    n_p[66]=7;
  101. h_p[67]=9;    n_p[67]=13;
  102. h_p[68]=9;    n_p[68]=15;
  103. h_p[69]=9;    n_p[69]=21;
  104. h_p[70]=9;    n_p[70]=43;
  105. h_p[71]=9;    n_p[71]=63;
  106. h_p[72]=9;    n_p[72]=99;
  107. h_p[73]=9;    n_p[73]=109;
  108. h_p[74]=9;    n_p[74]=159;
  109. h_p[75]=9;    n_p[75]=211;
  110. h_p[76]=9;    n_p[76]=309;
  111. h_p[77]=9;    n_p[77]=343;
  112. h_p[78]=9;    n_p[78]=415;
  113. h_p[79]=9;    n_p[79]=469;
  114. h_p[80]=9;    n_p[80]=781;
  115. h_p[81]=9;    n_p[81]=871;
  116. h_p[82]=9;    n_p[82]=939;
  117. h_p[83]=11;    n_p[83]=2;
  118. h_p[84]=11;    n_p[84]=26;
  119. h_p[85]=11;    n_p[85]=50;
  120. h_p[86]=11;    n_p[86]=54;
  121. h_p[87]=11;    n_p[87]=126;
  122. h_p[88]=11;    n_p[88]=134;
  123. h_p[89]=11;    n_p[89]=246;
  124. h_p[90]=11;    n_p[90]=354;
  125. h_p[91]=11;    n_p[91]=362;
  126. h_p[92]=11;    n_p[92]=950;
  127. h_p[93]=13;    n_p[93]=3;
  128. h_p[94]=13;    n_p[94]=7;
  129. h_p[95]=13;    n_p[95]=23;
  130. h_p[96]=13;    n_p[96]=287;
  131. h_p[97]=13;    n_p[97]=291;
  132. h_p[98]=13;    n_p[98]=795;
  133. h_p[99]=15;    n_p[99]=1;
  134. h_p[100]=15;    n_p[100]=2;
  135. h_p[101]=15;    n_p[101]=4;
  136. h_p[102]=15;    n_p[102]=5;
  137. h_p[103]=15;    n_p[103]=10;
  138. h_p[104]=15;    n_p[104]=14;
  139. h_p[105]=15;    n_p[105]=17;
  140. h_p[106]=15;    n_p[106]=31;
  141. h_p[107]=15;    n_p[107]=41;
  142. h_p[108]=15;    n_p[108]=73;
  143. h_p[109]=15;    n_p[109]=80;
  144. h_p[110]=15;    n_p[110]=82;
  145. h_p[111]=15;    n_p[111]=116;
  146. h_p[112]=15;    n_p[112]=125;
  147. h_p[113]=15;    n_p[113]=145;
  148. h_p[114]=15;    n_p[114]=157;
  149. h_p[115]=15;    n_p[115]=172;
  150. h_p[116]=15;    n_p[116]=202;
  151. h_p[117]=15;    n_p[117]=224;
  152. h_p[118]=15;    n_p[118]=266;
  153. h_p[119]=15;    n_p[119]=289;
  154. h_p[120]=15;    n_p[120]=293;
  155. h_p[121]=15;    n_p[121]=463;
  156. h_p[122]=17;    n_p[122]=2;
  157. h_p[123]=17;    n_p[123]=4;
  158. h_p[124]=17;    n_p[124]=6;
  159. h_p[125]=17;    n_p[125]=16;
  160. h_p[126]=17;    n_p[126]=20;
  161. h_p[127]=17;    n_p[127]=36;
  162. h_p[128]=17;    n_p[128]=54;
  163. h_p[129]=17;    n_p[129]=60;
  164. h_p[130]=17;    n_p[130]=96;
  165. h_p[131]=17;    n_p[131]=124;
  166. h_p[132]=17;    n_p[132]=150;
  167. h_p[133]=17;    n_p[133]=252;
  168. h_p[134]=17;    n_p[134]=356;
  169. h_p[135]=17;    n_p[135]=460;
  170. h_p[136]=17;    n_p[136]=612;
  171. h_p[137]=17;    n_p[137]=654;
  172. h_p[138]=17;    n_p[138]=664;
  173. h_p[139]=17;    n_p[139]=698;
  174. h_p[140]=17;    n_p[140]=702;
  175. h_p[141]=17;    n_p[141]=972;
  176. h_p[142]=19;    n_p[142]=1;
  177. h_p[143]=19;    n_p[143]=3;
  178. h_p[144]=19;    n_p[144]=5;
  179. h_p[145]=19;    n_p[145]=21;
  180. h_p[146]=19;    n_p[146]=41;
  181. h_p[147]=19;    n_p[147]=49;
  182. h_p[148]=19;    n_p[148]=89;
  183. h_p[149]=19;    n_p[149]=133;
  184. h_p[150]=19;    n_p[150]=141;
  185. h_p[151]=19;    n_p[151]=165;
  186. h_p[152]=19;    n_p[152]=189;
  187. h_p[153]=19;    n_p[153]=293;
  188. h_p[154]=19;    n_p[154]=305;
  189. h_p[155]=19;    n_p[155]=395;
  190. h_p[156]=19;    n_p[156]=651;
  191. h_p[157]=19;    n_p[157]=665;
  192. h_p[158]=19;    n_p[158]=771;
  193. h_p[159]=19;    n_p[159]=801;
  194. h_p[160]=19;    n_p[160]=923;
  195. h_p[161]=19;    n_p[161]=953;
  196. h_p[162]=21;    n_p[162]=1;
  197. h_p[163]=21;    n_p[163]=2;
  198. h_p[164]=21;    n_p[164]=3;
  199. h_p[165]=21;    n_p[165]=7;
  200. h_p[166]=21;    n_p[166]=10;
  201. h_p[167]=21;    n_p[167]=13;
  202. h_p[168]=21;    n_p[168]=18;
  203. h_p[169]=21;    n_p[169]=27;
  204. h_p[170]=21;    n_p[170]=37;
  205. h_p[171]=21;    n_p[171]=51;
  206. h_p[172]=21;    n_p[172]=74;
  207. h_p[173]=21;    n_p[173]=157;
  208. h_p[174]=21;    n_p[174]=271;
  209. h_p[175]=21;    n_p[175]=458;
  210. h_p[176]=21;    n_p[176]=530;
  211. h_p[177]=21;    n_p[177]=891;
  212. h_p[178]=23;    n_p[178]=4;
  213. h_p[179]=23;    n_p[179]=6;
  214. h_p[180]=23;    n_p[180]=12;
  215. h_p[181]=23;    n_p[181]=46;
  216. h_p[182]=23;    n_p[182]=72;
  217. h_p[183]=23;    n_p[183]=244;
  218. h_p[184]=23;    n_p[184]=264;
  219. h_p[185]=23;    n_p[185]=544;
  220. h_p[186]=23;    n_p[186]=888;
  221. h_p[187]=25;    n_p[187]=3;
  222. h_p[188]=25;    n_p[188]=9;
  223. h_p[189]=25;    n_p[189]=11;
  224. h_p[190]=25;    n_p[190]=17;
  225. h_p[191]=25;    n_p[191]=23;
  226. h_p[192]=25;    n_p[192]=35;
  227. h_p[193]=25;    n_p[193]=39;
  228. h_p[194]=25;    n_p[194]=75;
  229. h_p[195]=25;    n_p[195]=105;
  230. h_p[196]=25;    n_p[196]=107;
  231. h_p[197]=25;    n_p[197]=155;
  232. h_p[198]=25;    n_p[198]=215;
  233. h_p[199]=25;    n_p[199]=335;
  234. h_p[200]=25;    n_p[200]=635;
  235. h_p[201]=25;    n_p[201]=651;
  236. h_p[202]=25;    n_p[202]=687;
  237. h_p[203]=27;    n_p[203]=1;
  238. h_p[204]=27;    n_p[204]=2;
  239. h_p[205]=27;    n_p[205]=4;
  240. h_p[206]=27;    n_p[206]=5;
  241. h_p[207]=27;    n_p[207]=8;
  242. h_p[208]=27;    n_p[208]=10;
  243. h_p[209]=27;    n_p[209]=14;
  244. h_p[210]=27;    n_p[210]=28;
  245. h_p[211]=27;    n_p[211]=37;
  246. h_p[212]=27;    n_p[212]=38;
  247. h_p[213]=27;    n_p[213]=70;
  248. h_p[214]=27;    n_p[214]=121;
  249. h_p[215]=27;    n_p[215]=122;
  250. h_p[216]=27;    n_p[216]=160;
  251. h_p[217]=27;    n_p[217]=170;
  252. h_p[218]=27;    n_p[218]=253;
  253. h_p[219]=27;    n_p[219]=329;
  254. h_p[220]=27;    n_p[220]=362;
  255. h_p[221]=27;    n_p[221]=454;
  256. h_p[222]=27;    n_p[222]=485;
  257. h_p[223]=27;    n_p[223]=500;
  258. h_p[224]=27;    n_p[224]=574;
  259. h_p[225]=27;    n_p[225]=892;
  260. h_p[226]=27;    n_p[226]=962;
  261. h_p[227]=29;    n_p[227]=4;
  262. h_p[228]=29;    n_p[228]=16;
  263. h_p[229]=29;    n_p[229]=76;
  264. h_p[230]=29;    n_p[230]=148;
  265. h_p[231]=29;    n_p[231]=184;
  266. h_p[232]=31;    n_p[232]=1;
  267. h_p[233]=31;    n_p[233]=5;
  268. h_p[234]=31;    n_p[234]=7;
  269. h_p[235]=31;    n_p[235]=11;
  270. h_p[236]=31;    n_p[236]=13;
  271. h_p[237]=31;    n_p[237]=23;
  272. h_p[238]=31;    n_p[238]=33;
  273. h_p[239]=31;    n_p[239]=35;
  274. h_p[240]=31;    n_p[240]=37;
  275. h_p[241]=31;    n_p[241]=47;
  276. h_p[242]=31;    n_p[242]=115;
  277. h_p[243]=31;    n_p[243]=205;
  278. h_p[244]=31;    n_p[244]=235;
  279. h_p[245]=31;    n_p[245]=271;
  280. h_p[246]=31;    n_p[246]=409;
  281. h_p[247]=31;    n_p[247]=739;
  282. h_p[248]=31;    n_p[248]=837;
  283. h_p[249]=31;    n_p[249]=887;
  284. h_p[250]=33;    n_p[250]=2;
  285. h_p[251]=33;    n_p[251]=3;
  286. h_p[252]=33;    n_p[252]=6;
  287. h_p[253]=33;    n_p[253]=8;
  288. h_p[254]=33;    n_p[254]=10;
  289. h_p[255]=33;    n_p[255]=22;
  290. h_p[256]=33;    n_p[256]=35;
  291. h_p[257]=33;    n_p[257]=42;
  292. h_p[258]=33;    n_p[258]=43;
  293. h_p[259]=33;    n_p[259]=46;
  294. h_p[260]=33;    n_p[260]=56;
  295. h_p[261]=33;    n_p[261]=91;
  296. h_p[262]=33;    n_p[262]=102;
  297. h_p[263]=33;    n_p[263]=106;
  298. h_p[264]=33;    n_p[264]=142;
  299. h_p[265]=33;    n_p[265]=190;
  300. h_p[266]=33;    n_p[266]=208;
  301. h_p[267]=33;    n_p[267]=266;
  302. h_p[268]=33;    n_p[268]=330;
  303. h_p[269]=33;    n_p[269]=360;
  304. h_p[270]=33;    n_p[270]=382;
  305. h_p[271]=33;    n_p[271]=462;
  306. h_p[272]=33;    n_p[272]=503;
  307. h_p[273]=33;    n_p[273]=815;
  308. h_p[274]=35;    n_p[274]=2;
  309. h_p[275]=35;    n_p[275]=6;
  310. h_p[276]=35;    n_p[276]=10;
  311. h_p[277]=35;    n_p[277]=20;
  312. h_p[278]=35;    n_p[278]=44;
  313. h_p[279]=35;    n_p[279]=114;
  314. h_p[280]=35;    n_p[280]=146;
  315. h_p[281]=35;    n_p[281]=156;
  316. h_p[282]=35;    n_p[282]=174;
  317. h_p[283]=35;    n_p[283]=260;
  318. h_p[284]=35;    n_p[284]=306;
  319. h_p[285]=35;    n_p[285]=380;
  320. h_p[286]=35;    n_p[286]=654;
  321. h_p[287]=35;    n_p[287]=686;
  322. h_p[288]=35;    n_p[288]=702;
  323. h_p[289]=35;    n_p[289]=814;
  324. h_p[290]=35;    n_p[290]=906;
  325. h_p[291]=37;    n_p[291]=1;
  326. h_p[292]=39;    n_p[292]=3;
  327. h_p[293]=39;    n_p[293]=24;
  328. h_p[294]=39;    n_p[294]=105;
  329. h_p[295]=39;    n_p[295]=153;
  330. h_p[296]=39;    n_p[296]=188;
  331. h_p[297]=39;    n_p[297]=605;
  332. h_p[298]=39;    n_p[298]=795;
  333. h_p[299]=39;    n_p[299]=813;
  334. h_p[300]=39;    n_p[300]=839;
  335. h_p[301]=41;    n_p[301]=2;
  336. h_p[302]=41;    n_p[302]=10;
  337. h_p[303]=41;    n_p[303]=14;
  338. h_p[304]=41;    n_p[304]=18;
  339. h_p[305]=41;    n_p[305]=50;
  340. h_p[306]=41;    n_p[306]=114;
  341. h_p[307]=41;    n_p[307]=122;
  342. h_p[308]=41;    n_p[308]=294;
  343. h_p[309]=41;    n_p[309]=362;
  344. h_p[310]=41;    n_p[310]=554;
  345. h_p[311]=41;    n_p[311]=582;
  346. h_p[312]=41;    n_p[312]=638;
  347. h_p[313]=41;    n_p[313]=758;
  348. h_p[314]=43;    n_p[314]=7;
  349. h_p[315]=43;    n_p[315]=31;
  350. h_p[316]=43;    n_p[316]=67;
  351. h_p[317]=43;    n_p[317]=251;
  352. h_p[318]=43;    n_p[318]=767;
  353. h_p[319]=45;    n_p[319]=1;
  354. h_p[320]=45;    n_p[320]=2;
  355. h_p[321]=45;    n_p[321]=3;
  356. h_p[322]=45;    n_p[322]=4;
  357. h_p[323]=45;    n_p[323]=5;
  358. h_p[324]=45;    n_p[324]=6;
  359. h_p[325]=45;    n_p[325]=8;
  360. h_p[326]=45;    n_p[326]=9;
  361. h_p[327]=45;    n_p[327]=14;
  362. h_p[328]=45;    n_p[328]=15;
  363. h_p[329]=45;    n_p[329]=16;
  364. h_p[330]=45;    n_p[330]=22;
  365. h_p[331]=45;    n_p[331]=28;
  366. h_p[332]=45;    n_p[332]=29;
  367. h_p[333]=45;    n_p[333]=36;
  368. h_p[334]=45;    n_p[334]=37;
  369. h_p[335]=45;    n_p[335]=54;
  370. h_p[336]=45;    n_p[336]=59;
  371. h_p[337]=45;    n_p[337]=85;
  372. h_p[338]=45;    n_p[338]=93;
  373. h_p[339]=45;    n_p[339]=117;
  374. h_p[340]=45;    n_p[340]=119;
  375. h_p[341]=45;    n_p[341]=161;
  376. h_p[342]=45;    n_p[342]=189;
  377. h_p[343]=45;    n_p[343]=193;
  378. h_p[344]=45;    n_p[344]=256;
  379. h_p[345]=45;    n_p[345]=308;
  380. h_p[346]=45;    n_p[346]=322;
  381. h_p[347]=45;    n_p[347]=327;
  382. h_p[348]=45;    n_p[348]=411;
  383. h_p[349]=45;    n_p[349]=466;
  384. h_p[350]=45;    n_p[350]=577;
  385. h_p[351]=45;    n_p[351]=591;
  386. h_p[352]=45;    n_p[352]=902;
  387. h_p[353]=45;    n_p[353]=928;
  388. h_p[354]=45;    n_p[354]=946;
  389. h_p[355]=47;    n_p[355]=4;
  390. h_p[356]=47;    n_p[356]=14;
  391. h_p[357]=47;    n_p[357]=70;
  392. h_p[358]=47;    n_p[358]=78;
  393. h_p[359]=49;    n_p[359]=1;
  394. h_p[360]=49;    n_p[360]=5;
  395. h_p[361]=49;    n_p[361]=7;
  396. h_p[362]=49;    n_p[362]=9;
  397. h_p[363]=49;    n_p[363]=13;
  398. h_p[364]=49;    n_p[364]=15;
  399. h_p[365]=49;    n_p[365]=29;
  400. h_p[366]=49;    n_p[366]=33;
  401. h_p[367]=49;    n_p[367]=39;
  402. h_p[368]=49;    n_p[368]=55;
  403. h_p[369]=49;    n_p[369]=81;
  404. h_p[370]=49;    n_p[370]=95;
  405. h_p[371]=49;    n_p[371]=205;
  406. h_p[372]=49;    n_p[372]=279;
  407. h_p[373]=49;    n_p[373]=581;
  408. h_p[374]=49;    n_p[374]=807;
  409. h_p[375]=49;    n_p[375]=813;
  410. h_p[376]=51;    n_p[376]=1;
  411. h_p[377]=51;    n_p[377]=9;
  412. h_p[378]=51;    n_p[378]=10;
  413. h_p[379]=51;    n_p[379]=19;
  414. h_p[380]=51;    n_p[380]=22;
  415. h_p[381]=51;    n_p[381]=57;
  416. h_p[382]=51;    n_p[382]=69;
  417. h_p[383]=51;    n_p[383]=97;
  418. h_p[384]=51;    n_p[384]=141;
  419. h_p[385]=51;    n_p[385]=169;
  420. h_p[386]=51;    n_p[386]=171;
  421. h_p[387]=51;    n_p[387]=195;
  422. h_p[388]=51;    n_p[388]=238;
  423. h_p[389]=51;    n_p[389]=735;
  424. h_p[390]=51;    n_p[390]=885;
  425. h_p[391]=53;    n_p[391]=2;
  426. h_p[392]=53;    n_p[392]=6;
  427. h_p[393]=53;    n_p[393]=8;
  428. h_p[394]=53;    n_p[394]=42;
  429. h_p[395]=53;    n_p[395]=50;
  430. h_p[396]=53;    n_p[396]=62;
  431. h_p[397]=53;    n_p[397]=362;
  432. h_p[398]=53;    n_p[398]=488;
  433. h_p[399]=53;    n_p[399]=642;
  434. h_p[400]=53;    n_p[400]=846;
  435. h_p[401]=55;    n_p[401]=1;
  436. h_p[402]=55;    n_p[402]=3;
  437. h_p[403]=55;    n_p[403]=5;
  438. h_p[404]=55;    n_p[404]=7;
  439. h_p[405]=55;    n_p[405]=15;
  440. h_p[406]=55;    n_p[406]=33;
  441. h_p[407]=55;    n_p[407]=41;
  442. h_p[408]=55;    n_p[408]=57;
  443. h_p[409]=55;    n_p[409]=69;
  444. h_p[410]=55;    n_p[410]=75;
  445. h_p[411]=55;    n_p[411]=77;
  446. h_p[412]=55;    n_p[412]=131;
  447. h_p[413]=55;    n_p[413]=133;
  448. h_p[414]=55;    n_p[414]=153;
  449. h_p[415]=55;    n_p[415]=247;
  450. h_p[416]=55;    n_p[416]=305;
  451. h_p[417]=55;    n_p[417]=351;
  452. h_p[418]=55;    n_p[418]=409;
  453. h_p[419]=55;    n_p[419]=471;
  454. h_p[420]=57;    n_p[420]=1;
  455. h_p[421]=57;    n_p[421]=2;
  456. h_p[422]=57;    n_p[422]=4;
  457. h_p[423]=57;    n_p[423]=5;
  458. h_p[424]=57;    n_p[424]=8;
  459. h_p[425]=57;    n_p[425]=10;
  460. h_p[426]=57;    n_p[426]=20;
  461. h_p[427]=57;    n_p[427]=22;
  462. h_p[428]=57;    n_p[428]=25;
  463. h_p[429]=57;    n_p[429]=26;
  464. h_p[430]=57;    n_p[430]=32;
  465. h_p[431]=57;    n_p[431]=44;
  466. h_p[432]=57;    n_p[432]=62;
  467. h_p[433]=57;    n_p[433]=77;
  468. h_p[434]=57;    n_p[434]=158;
  469. h_p[435]=57;    n_p[435]=317;
  470. h_p[436]=57;    n_p[436]=500;
  471. h_p[437]=57;    n_p[437]=713;
  472. h_p[438]=59;    n_p[438]=12;
  473. h_p[439]=59;    n_p[439]=16;
  474. h_p[440]=59;    n_p[440]=72;
  475. h_p[441]=59;    n_p[441]=160;
  476. h_p[442]=59;    n_p[442]=256;
  477. h_p[443]=59;    n_p[443]=916;
  478. h_p[444]=61;    n_p[444]=3;
  479. h_p[445]=61;    n_p[445]=5;
  480. h_p[446]=61;    n_p[446]=9;
  481. h_p[447]=61;    n_p[447]=13;
  482. h_p[448]=61;    n_p[448]=17;
  483. h_p[449]=61;    n_p[449]=19;
  484. h_p[450]=61;    n_p[450]=25;
  485. h_p[451]=61;    n_p[451]=39;
  486. h_p[452]=61;    n_p[452]=63;
  487. h_p[453]=61;    n_p[453]=67;
  488. h_p[454]=61;    n_p[454]=75;
  489. h_p[455]=61;    n_p[455]=119;
  490. h_p[456]=61;    n_p[456]=147;
  491. h_p[457]=61;    n_p[457]=225;
  492. h_p[458]=61;    n_p[458]=419;
  493. h_p[459]=61;    n_p[459]=715;
  494. h_p[460]=61;    n_p[460]=895;
  495. h_p[461]=63;    n_p[461]=2;
  496. h_p[462]=63;    n_p[462]=3;
  497. h_p[463]=63;    n_p[463]=8;
  498. h_p[464]=63;    n_p[464]=11;
  499. h_p[465]=63;    n_p[465]=14;
  500. h_p[466]=63;    n_p[466]=16;
  501. h_p[467]=63;    n_p[467]=28;
  502. h_p[468]=63;    n_p[468]=32;
  503. h_p[469]=63;    n_p[469]=39;
  504. h_p[470]=63;    n_p[470]=66;
  505. h_p[471]=63;    n_p[471]=68;
  506. h_p[472]=63;    n_p[472]=91;
  507. h_p[473]=63;    n_p[473]=98;
  508. h_p[474]=63;    n_p[474]=116;
  509. h_p[475]=63;    n_p[475]=126;
  510. h_p[476]=63;    n_p[476]=164;
  511. h_p[477]=63;    n_p[477]=191;
  512. h_p[478]=63;    n_p[478]=298;
  513. h_p[479]=63;    n_p[479]=323;
  514. h_p[480]=63;    n_p[480]=443;
  515. h_p[481]=63;    n_p[481]=714;
  516. h_p[482]=63;    n_p[482]=758;
  517. h_p[483]=63;    n_p[483]=759;
  518. h_p[484]=65;    n_p[484]=4;
  519. h_p[485]=65;    n_p[485]=6;
  520. h_p[486]=65;    n_p[486]=12;
  521. h_p[487]=65;    n_p[487]=22;
  522. h_p[488]=65;    n_p[488]=28;
  523. h_p[489]=65;    n_p[489]=52;
  524. h_p[490]=65;    n_p[490]=78;
  525. h_p[491]=65;    n_p[491]=94;
  526. h_p[492]=65;    n_p[492]=124;
  527. h_p[493]=65;    n_p[493]=162;
  528. h_p[494]=65;    n_p[494]=174;
  529. h_p[495]=65;    n_p[495]=192;
  530. h_p[496]=65;    n_p[496]=204;
  531. h_p[497]=65;    n_p[497]=304;
  532. h_p[498]=65;    n_p[498]=376;
  533. h_p[499]=65;    n_p[499]=808;
  534. h_p[500]=65;    n_p[500]=930;
  535. h_p[501]=65;    n_p[501]=972;
  536. h_p[502]=67;    n_p[502]=5;
  537. h_p[503]=67;    n_p[503]=9;
  538. h_p[504]=67;    n_p[504]=21;
  539. h_p[505]=67;    n_p[505]=45;
  540. h_p[506]=67;    n_p[506]=65;
  541. h_p[507]=67;    n_p[507]=77;
  542. h_p[508]=67;    n_p[508]=273;
  543. h_p[509]=67;    n_p[509]=677;
  544. h_p[510]=69;    n_p[510]=1;
  545. h_p[511]=69;    n_p[511]=4;
  546. h_p[512]=69;    n_p[512]=5;
  547. h_p[513]=69;    n_p[513]=7;
  548. h_p[514]=69;    n_p[514]=9;
  549. h_p[515]=69;    n_p[515]=11;
  550. h_p[516]=69;    n_p[516]=13;
  551. h_p[517]=69;    n_p[517]=17;
  552. h_p[518]=69;    n_p[518]=19;
  553. h_p[519]=69;    n_p[519]=23;
  554. h_p[520]=69;    n_p[520]=29;
  555. h_p[521]=69;    n_p[521]=37;
  556. h_p[522]=69;    n_p[522]=49;
  557. h_p[523]=69;    n_p[523]=61;
  558. h_p[524]=69;    n_p[524]=79;
  559. h_p[525]=69;    n_p[525]=99;
  560. h_p[526]=69;    n_p[526]=121;
  561. h_p[527]=69;    n_p[527]=133;
  562. h_p[528]=69;    n_p[528]=141;
  563. h_p[529]=69;    n_p[529]=164;
  564. h_p[530]=69;    n_p[530]=173;
  565. h_p[531]=69;    n_p[531]=181;
  566. h_p[532]=69;    n_p[532]=185;
  567. h_p[533]=69;    n_p[533]=193;
  568. h_p[534]=69;    n_p[534]=233;
  569. h_p[535]=69;    n_p[535]=299;
  570. h_p[536]=69;    n_p[536]=313;
  571. h_p[537]=69;    n_p[537]=351;
  572. h_p[538]=69;    n_p[538]=377;
  573. h_p[539]=69;    n_p[539]=540;
  574. h_p[540]=69;    n_p[540]=569;
  575. h_p[541]=69;    n_p[541]=909;
  576. h_p[542]=71;    n_p[542]=2;
  577. h_p[543]=71;    n_p[543]=14;
  578. h_p[544]=71;    n_p[544]=410;
  579. h_p[545]=73;    n_p[545]=7;
  580. h_p[546]=73;    n_p[546]=11;
  581. h_p[547]=73;    n_p[547]=19;
  582. h_p[548]=73;    n_p[548]=71;
  583. h_p[549]=73;    n_p[549]=79;
  584. h_p[550]=73;    n_p[550]=131;
  585. h_p[551]=75;    n_p[551]=1;
  586. h_p[552]=75;    n_p[552]=3;
  587. h_p[553]=75;    n_p[553]=5;
  588. h_p[554]=75;    n_p[554]=6;
  589. h_p[555]=75;    n_p[555]=18;
  590. h_p[556]=75;    n_p[556]=19;
  591. h_p[557]=75;    n_p[557]=20;
  592. h_p[558]=75;    n_p[558]=22;
  593. h_p[559]=75;    n_p[559]=28;
  594. h_p[560]=75;    n_p[560]=29;
  595. h_p[561]=75;    n_p[561]=39;
  596. h_p[562]=75;    n_p[562]=43;
  597. h_p[563]=75;    n_p[563]=49;
  598. h_p[564]=75;    n_p[564]=75;
  599. h_p[565]=75;    n_p[565]=85;
  600. h_p[566]=75;    n_p[566]=92;
  601. h_p[567]=75;    n_p[567]=111;
  602. h_p[568]=75;    n_p[568]=126;
  603. h_p[569]=75;    n_p[569]=136;
  604. h_p[570]=75;    n_p[570]=159;
  605. h_p[571]=75;    n_p[571]=162;
  606. h_p[572]=75;    n_p[572]=237;
  607. h_p[573]=75;    n_p[573]=349;
  608. h_p[574]=75;    n_p[574]=381;
  609. h_p[575]=75;    n_p[575]=767;
  610. h_p[576]=75;    n_p[576]=969;
  611. h_p[577]=77;    n_p[577]=2;
  612. h_p[578]=77;    n_p[578]=4;
  613. h_p[579]=77;    n_p[579]=14;
  614. h_p[580]=77;    n_p[580]=26;
  615. h_p[581]=77;    n_p[581]=58;
  616. h_p[582]=77;    n_p[582]=60;
  617. h_p[583]=77;    n_p[583]=64;
  618. h_p[584]=77;    n_p[584]=100;
  619. h_p[585]=77;    n_p[585]=122;
  620. h_p[586]=77;    n_p[586]=212;
  621. h_p[587]=77;    n_p[587]=566;
  622. h_p[588]=77;    n_p[588]=638;
  623. h_p[589]=79;    n_p[589]=1;
  624. h_p[590]=79;    n_p[590]=3;
  625. h_p[591]=79;    n_p[591]=7;
  626. h_p[592]=79;    n_p[592]=15;
  627. h_p[593]=79;    n_p[593]=43;
  628. h_p[594]=79;    n_p[594]=57;
  629. h_p[595]=79;    n_p[595]=61;
  630. h_p[596]=79;    n_p[596]=75;
  631. h_p[597]=79;    n_p[597]=145;
  632. h_p[598]=79;    n_p[598]=217;
  633. h_p[599]=79;    n_p[599]=247;
  634. h_p[600]=81;    n_p[600]=3;
  635. h_p[601]=81;    n_p[601]=5;
  636. h_p[602]=81;    n_p[602]=11;
  637. h_p[603]=81;    n_p[603]=17;
  638. h_p[604]=81;    n_p[604]=21;
  639. h_p[605]=81;    n_p[605]=27;
  640. h_p[606]=81;    n_p[606]=81;
  641. h_p[607]=81;    n_p[607]=101;
  642. h_p[608]=81;    n_p[608]=107;
  643. h_p[609]=81;    n_p[609]=327;
  644. h_p[610]=81;    n_p[610]=383;
  645. h_p[611]=81;    n_p[611]=387;
  646. h_p[612]=81;    n_p[612]=941;
  647. h_p[613]=83;    n_p[613]=2;
  648. h_p[614]=83;    n_p[614]=4;
  649. h_p[615]=83;    n_p[615]=8;
  650. h_p[616]=83;    n_p[616]=10;
  651. h_p[617]=83;    n_p[617]=14;
  652. h_p[618]=83;    n_p[618]=18;
  653. h_p[619]=83;    n_p[619]=22;
  654. h_p[620]=83;    n_p[620]=24;
  655. h_p[621]=83;    n_p[621]=26;
  656. h_p[622]=83;    n_p[622]=28;
  657. h_p[623]=83;    n_p[623]=36;
  658. h_p[624]=83;    n_p[624]=42;
  659. h_p[625]=83;    n_p[625]=58;
  660. h_p[626]=83;    n_p[626]=64;
  661. h_p[627]=83;    n_p[627]=78;
  662. h_p[628]=83;    n_p[628]=158;
  663. h_p[629]=83;    n_p[629]=198;
  664. h_p[630]=83;    n_p[630]=206;
  665. h_p[631]=83;    n_p[631]=424;
  666. h_p[632]=83;    n_p[632]=550;
  667. h_p[633]=83;    n_p[633]=676;
  668. h_p[634]=83;    n_p[634]=904;
  669. h_p[635]=85;    n_p[635]=5;
  670. h_p[636]=85;    n_p[636]=11;
  671. h_p[637]=85;    n_p[637]=71;
  672. h_p[638]=85;    n_p[638]=113;
  673. h_p[639]=85;    n_p[639]=115;
  674. h_p[640]=85;    n_p[640]=355;
  675. h_p[641]=85;    n_p[641]=473;
  676. h_p[642]=85;    n_p[642]=563;
  677. h_p[643]=85;    n_p[643]=883;
  678. h_p[644]=87;    n_p[644]=1;
  679. h_p[645]=87;    n_p[645]=2;
  680. h_p[646]=87;    n_p[646]=8;
  681. h_p[647]=87;    n_p[647]=9;
  682. h_p[648]=87;    n_p[648]=10;
  683. h_p[649]=87;    n_p[649]=12;
  684. h_p[650]=87;    n_p[650]=22;
  685. h_p[651]=87;    n_p[651]=29;
  686. h_p[652]=87;    n_p[652]=32;
  687. h_p[653]=87;    n_p[653]=50;
  688. h_p[654]=87;    n_p[654]=57;
  689. h_p[655]=87;    n_p[655]=69;
  690. h_p[656]=87;    n_p[656]=81;
  691. h_p[657]=87;    n_p[657]=122;
  692. h_p[658]=87;    n_p[658]=138;
  693. h_p[659]=87;    n_p[659]=200;
  694. h_p[660]=87;    n_p[660]=296;
  695. h_p[661]=87;    n_p[661]=514;
  696. h_p[662]=87;    n_p[662]=656;
  697. h_p[663]=87;    n_p[663]=682;
  698. h_p[664]=87;    n_p[664]=778;
  699. h_p[665]=87;    n_p[665]=881;
  700. h_p[666]=89;    n_p[666]=4;
  701. h_p[667]=89;    n_p[667]=8;
  702. h_p[668]=89;    n_p[668]=12;
  703. h_p[669]=89;    n_p[669]=24;
  704. h_p[670]=89;    n_p[670]=48;
  705. h_p[671]=89;    n_p[671]=52;
  706. h_p[672]=89;    n_p[672]=64;
  707. h_p[673]=89;    n_p[673]=84;
  708. h_p[674]=89;    n_p[674]=96;
  709. h_p[675]=91;    n_p[675]=1;
  710. h_p[676]=91;    n_p[676]=3;
  711. h_p[677]=91;    n_p[677]=9;
  712. h_p[678]=91;    n_p[678]=13;
  713. h_p[679]=91;    n_p[679]=15;
  714. h_p[680]=91;    n_p[680]=17;
  715. h_p[681]=91;    n_p[681]=19;
  716. h_p[682]=91;    n_p[682]=23;
  717. h_p[683]=91;    n_p[683]=47;
  718. h_p[684]=91;    n_p[684]=57;
  719. h_p[685]=91;    n_p[685]=67;
  720. h_p[686]=91;    n_p[686]=73;
  721. h_p[687]=91;    n_p[687]=77;
  722. h_p[688]=91;    n_p[688]=81;
  723. h_p[689]=91;    n_p[689]=83;
  724. h_p[690]=91;    n_p[690]=191;
  725. h_p[691]=91;    n_p[691]=301;
  726. h_p[692]=91;    n_p[692]=321;
  727. h_p[693]=91;    n_p[693]=435;
  728. h_p[694]=91;    n_p[694]=867;
  729. h_p[695]=91;    n_p[695]=869;
  730. h_p[696]=91;    n_p[696]=917;
  731. h_p[697]=93;    n_p[697]=3;
  732. h_p[698]=93;    n_p[698]=4;
  733. h_p[699]=93;    n_p[699]=7;
  734. h_p[700]=93;    n_p[700]=10;
  735. h_p[701]=93;    n_p[701]=15;
  736. h_p[702]=93;    n_p[702]=18;
  737. h_p[703]=93;    n_p[703]=19;
  738. h_p[704]=93;    n_p[704]=24;
  739. h_p[705]=93;    n_p[705]=27;
  740. h_p[706]=93;    n_p[706]=39;
  741. h_p[707]=93;    n_p[707]=60;
  742. h_p[708]=93;    n_p[708]=84;
  743. h_p[709]=93;    n_p[709]=111;
  744. h_p[710]=93;    n_p[710]=171;
  745. h_p[711]=93;    n_p[711]=192;
  746. h_p[712]=93;    n_p[712]=222;
  747. h_p[713]=93;    n_p[713]=639;
  748. h_p[714]=93;    n_p[714]=954;
  749. h_p[715]=95;    n_p[715]=2;
  750. h_p[716]=95;    n_p[716]=6;
  751. h_p[717]=95;    n_p[717]=26;
  752. h_p[718]=95;    n_p[718]=32;
  753. h_p[719]=95;    n_p[719]=66;
  754. h_p[720]=95;    n_p[720]=128;
  755. h_p[721]=95;    n_p[721]=170;
  756. h_p[722]=95;    n_p[722]=288;
  757. h_p[723]=95;    n_p[723]=320;
  758. h_p[724]=95;    n_p[724]=470;
  759. h_p[725]=97;    n_p[725]=1;
  760. h_p[726]=97;    n_p[726]=9;
  761. h_p[727]=97;    n_p[727]=45;
  762. h_p[728]=97;    n_p[728]=177;
  763. h_p[729]=97;    n_p[729]=585;
  764. h_p[730]=99;    n_p[730]=1;
  765. h_p[731]=99;    n_p[731]=4;
  766. h_p[732]=99;    n_p[732]=5;
  767. h_p[733]=99;    n_p[733]=7;
  768. h_p[734]=99;    n_p[734]=8;
  769. h_p[735]=99;    n_p[735]=11;
  770. h_p[736]=99;    n_p[736]=19;
  771. h_p[737]=99;    n_p[737]=25;
  772. h_p[738]=99;    n_p[738]=28;
  773. h_p[739]=99;    n_p[739]=35;
  774. h_p[740]=99;    n_p[740]=65;
  775. h_p[741]=99;    n_p[741]=79;
  776. h_p[742]=99;    n_p[742]=212;
  777. h_p[743]=99;    n_p[743]=271;
  778. h_p[744]=99;    n_p[744]=361;
  779. h_p[745]=99;    n_p[745]=461;
  780. h_p[746]=101;    n_p[746]=10;
  781. h_p[747]=101;    n_p[747]=18;
  782. h_p[748]=101;    n_p[748]=54;
  783. h_p[749]=101;    n_p[749]=70;
  784. h_p[750]=103;    n_p[750]=3;
  785. h_p[751]=103;    n_p[751]=7;
  786. h_p[752]=103;    n_p[752]=11;
  787. h_p[753]=103;    n_p[753]=19;
  788. h_p[754]=103;    n_p[754]=63;
  789. h_p[755]=103;    n_p[755]=75;
  790. h_p[756]=103;    n_p[756]=95;
  791. h_p[757]=103;    n_p[757]=127;
  792. h_p[758]=103;    n_p[758]=155;
  793. h_p[759]=103;    n_p[759]=163;
  794. h_p[760]=103;    n_p[760]=171;
  795. h_p[761]=103;    n_p[761]=283;
  796. h_p[762]=103;    n_p[762]=563;
  797. h_p[763]=105;    n_p[763]=2;
  798. h_p[764]=105;    n_p[764]=3;
  799. h_p[765]=105;    n_p[765]=5;
  800. h_p[766]=105;    n_p[766]=6;
  801. h_p[767]=105;    n_p[767]=8;
  802. h_p[768]=105;    n_p[768]=9;
  803. h_p[769]=105;    n_p[769]=25;
  804. h_p[770]=105;    n_p[770]=32;
  805. h_p[771]=105;    n_p[771]=65;
  806. h_p[772]=105;    n_p[772]=113;
  807. h_p[773]=105;    n_p[773]=119;
  808. h_p[774]=105;    n_p[774]=155;
  809. h_p[775]=105;    n_p[775]=177;
  810. h_p[776]=105;    n_p[776]=299;
  811. h_p[777]=105;    n_p[777]=335;
  812. h_p[778]=105;    n_p[778]=426;
  813. h_p[779]=105;    n_p[779]=462;
  814. h_p[780]=105;    n_p[780]=617;
  815. h_p[781]=105;    n_p[781]=896;
  816. h_p[782]=107;    n_p[782]=10;
  817. h_p[783]=107;    n_p[783]=12;
  818. h_p[784]=107;    n_p[784]=18;
  819. h_p[785]=107;    n_p[785]=24;
  820. h_p[786]=107;    n_p[786]=28;
  821. h_p[787]=107;    n_p[787]=40;
  822. h_p[788]=107;    n_p[788]=90;
  823. h_p[789]=107;    n_p[789]=132;
  824. h_p[790]=107;    n_p[790]=214;
  825. h_p[791]=107;    n_p[791]=238;
  826. h_p[792]=107;    n_p[792]=322;
  827. h_p[793]=107;    n_p[793]=532;
  828. h_p[794]=107;    n_p[794]=858;
  829. h_p[795]=107;    n_p[795]=940;
  830. h_p[796]=109;    n_p[796]=9;
  831. h_p[797]=109;    n_p[797]=149;
  832. h_p[798]=109;    n_p[798]=177;
  833. h_p[799]=109;    n_p[799]=419;
  834. h_p[800]=109;    n_p[800]=617;
  835. h_p[801]=113;    n_p[801]=8;
  836. h_p[802]=113;    n_p[802]=14;
  837. h_p[803]=113;    n_p[803]=74;
  838. h_p[804]=113;    n_p[804]=80;
  839. h_p[805]=113;    n_p[805]=274;
  840. h_p[806]=113;    n_p[806]=334;
  841. h_p[807]=113;    n_p[807]=590;
  842. h_p[808]=113;    n_p[808]=608;
  843. h_p[809]=113;    n_p[809]=614;
  844. h_p[810]=113;    n_p[810]=650;
  845. h_p[811]=115;    n_p[811]=1;
  846. h_p[812]=115;    n_p[812]=3;
  847. h_p[813]=115;    n_p[813]=11;
  848. h_p[814]=115;    n_p[814]=13;
  849. h_p[815]=115;    n_p[815]=19;
  850. h_p[816]=115;    n_p[816]=21;
  851. h_p[817]=115;    n_p[817]=31;
  852. h_p[818]=115;    n_p[818]=49;
  853. h_p[819]=115;    n_p[819]=59;
  854. h_p[820]=115;    n_p[820]=69;
  855. h_p[821]=115;    n_p[821]=73;
  856. h_p[822]=115;    n_p[822]=115;
  857. h_p[823]=115;    n_p[823]=129;
  858. h_p[824]=115;    n_p[824]=397;
  859. h_p[825]=115;    n_p[825]=623;
  860. h_p[826]=115;    n_p[826]=769;
  861. h_p[827]=119;    n_p[827]=12;
  862. h_p[828]=119;    n_p[828]=16;
  863. h_p[829]=119;    n_p[829]=52;
  864. h_p[830]=119;    n_p[830]=160;
  865. h_p[831]=119;    n_p[831]=192;
  866. h_p[832]=119;    n_p[832]=216;
  867. h_p[833]=119;    n_p[833]=376;
  868. h_p[834]=119;    n_p[834]=436;
  869. h_p[835]=121;    n_p[835]=1;
  870. h_p[836]=121;    n_p[836]=3;
  871. h_p[837]=121;    n_p[837]=21;
  872. h_p[838]=121;    n_p[838]=27;
  873. h_p[839]=121;    n_p[839]=37;
  874. h_p[840]=121;    n_p[840]=43;
  875. h_p[841]=121;    n_p[841]=91;
  876. h_p[842]=121;    n_p[842]=117;
  877. h_p[843]=121;    n_p[843]=141;
  878. h_p[844]=121;    n_p[844]=163;
  879. h_p[845]=121;    n_p[845]=373;
  880. h_p[846]=121;    n_p[846]=421;
  881. h_p[847]=125;    n_p[847]=2;
  882. h_p[848]=125;    n_p[848]=4;
  883. h_p[849]=125;    n_p[849]=44;
  884. h_p[850]=125;    n_p[850]=182;
  885. h_p[851]=125;    n_p[851]=496;
  886. h_p[852]=125;    n_p[852]=904;
  887. h_p[853]=127;    n_p[853]=25;
  888. h_p[854]=127;    n_p[854]=113;
  889. h_p[855]=131;    n_p[855]=2;
  890. h_p[856]=131;    n_p[856]=14;
  891. h_p[857]=131;    n_p[857]=34;
  892. h_p[858]=131;    n_p[858]=38;
  893. h_p[859]=131;    n_p[859]=42;
  894. h_p[860]=131;    n_p[860]=78;
  895. h_p[861]=131;    n_p[861]=90;
  896. h_p[862]=131;    n_p[862]=178;
  897. h_p[863]=131;    n_p[863]=778;
  898. h_p[864]=131;    n_p[864]=974;
  899. h_p[865]=133;    n_p[865]=3;
  900. h_p[866]=133;    n_p[866]=11;
  901. h_p[867]=133;    n_p[867]=15;
  902. h_p[868]=133;    n_p[868]=19;
  903. h_p[869]=133;    n_p[869]=31;
  904. h_p[870]=133;    n_p[870]=59;
  905. h_p[871]=133;    n_p[871]=75;
  906. h_p[872]=133;    n_p[872]=103;
  907. h_p[873]=133;    n_p[873]=163;
  908. h_p[874]=133;    n_p[874]=235;
  909. h_p[875]=133;    n_p[875]=375;
  910. h_p[876]=133;    n_p[876]=615;
  911. h_p[877]=133;    n_p[877]=767;
  912. h_p[878]=137;    n_p[878]=2;
  913. h_p[879]=137;    n_p[879]=18;
  914. h_p[880]=137;    n_p[880]=38;
  915. h_p[881]=137;    n_p[881]=62;
  916. h_p[882]=139;    n_p[882]=1;
  917. h_p[883]=139;    n_p[883]=5;
  918. h_p[884]=139;    n_p[884]=7;
  919. h_p[885]=139;    n_p[885]=9;
  920. h_p[886]=139;    n_p[886]=15;
  921. h_p[887]=139;    n_p[887]=19;
  922. h_p[888]=139;    n_p[888]=21;
  923. h_p[889]=139;    n_p[889]=35;
  924. h_p[890]=139;    n_p[890]=37;
  925. h_p[891]=139;    n_p[891]=39;
  926. h_p[892]=139;    n_p[892]=41;
  927. h_p[893]=139;    n_p[893]=49;
  928. h_p[894]=139;    n_p[894]=69;
  929. h_p[895]=139;    n_p[895]=111;
  930. h_p[896]=139;    n_p[896]=115;
  931. h_p[897]=139;    n_p[897]=141;
  932. h_p[898]=139;    n_p[898]=159;
  933. h_p[899]=139;    n_p[899]=181;
  934. h_p[900]=139;    n_p[900]=201;
  935. h_p[901]=139;    n_p[901]=217;
  936. h_p[902]=139;    n_p[902]=487;
  937. h_p[903]=139;    n_p[903]=567;
  938. h_p[904]=139;    n_p[904]=677;
  939. h_p[905]=139;    n_p[905]=765;
  940. h_p[906]=139;    n_p[906]=811;
  941. h_p[907]=139;    n_p[907]=841;
  942. h_p[908]=139;    n_p[908]=917;
  943. h_p[909]=143;    n_p[909]=2;
  944. h_p[910]=143;    n_p[910]=4;
  945. h_p[911]=143;    n_p[911]=6;
  946. h_p[912]=143;    n_p[912]=8;
  947. h_p[913]=143;    n_p[913]=12;
  948. h_p[914]=143;    n_p[914]=18;
  949. h_p[915]=143;    n_p[915]=26;
  950. h_p[916]=143;    n_p[916]=32;
  951. h_p[917]=143;    n_p[917]=34;
  952. h_p[918]=143;    n_p[918]=36;
  953. h_p[919]=143;    n_p[919]=42;
  954. h_p[920]=143;    n_p[920]=60;
  955. h_p[921]=143;    n_p[921]=78;
  956. h_p[922]=143;    n_p[922]=82;
  957. h_p[923]=143;    n_p[923]=84;
  958. h_p[924]=143;    n_p[924]=88;
  959. h_p[925]=143;    n_p[925]=154;
  960. h_p[926]=143;    n_p[926]=174;
  961. h_p[927]=143;    n_p[927]=208;
  962. h_p[928]=143;    n_p[928]=256;
  963. h_p[929]=143;    n_p[929]=366;
  964. h_p[930]=143;    n_p[930]=448;
  965. h_p[931]=143;    n_p[931]=478;
  966. h_p[932]=143;    n_p[932]=746;
  967. h_p[933]=145;    n_p[933]=5;
  968. h_p[934]=145;    n_p[934]=13;
  969. h_p[935]=145;    n_p[935]=15;
  970. h_p[936]=145;    n_p[936]=31;
  971. h_p[937]=145;    n_p[937]=77;
  972. h_p[938]=145;    n_p[938]=151;
  973. h_p[939]=145;    n_p[939]=181;
  974. h_p[940]=145;    n_p[940]=245;
  975. h_p[941]=145;    n_p[941]=445;
  976. h_p[942]=145;    n_p[942]=447;
  977. h_p[943]=145;    n_p[943]=883;
  978. h_p[944]=149;    n_p[944]=4;
  979. h_p[945]=149;    n_p[945]=16;
  980. h_p[946]=149;    n_p[946]=48;
  981. h_p[947]=149;    n_p[947]=60;
  982. h_p[948]=149;    n_p[948]=240;
  983. h_p[949]=149;    n_p[949]=256;
  984. h_p[950]=149;    n_p[950]=304;
  985. h_p[951]=151;    n_p[951]=5;
  986. h_p[952]=151;    n_p[952]=221;
  987. h_p[953]=151;    n_p[953]=641;
  988. h_p[954]=155;    n_p[954]=2;
  989. h_p[955]=155;    n_p[955]=8;
  990. h_p[956]=155;    n_p[956]=14;
  991. h_p[957]=155;    n_p[957]=16;
  992. h_p[958]=155;    n_p[958]=44;
  993. h_p[959]=155;    n_p[959]=46;
  994. h_p[960]=155;    n_p[960]=82;
  995. h_p[961]=155;    n_p[961]=172;
  996. h_p[962]=155;    n_p[962]=196;
  997. h_p[963]=155;    n_p[963]=254;
  998. h_p[964]=155;    n_p[964]=556;
  999. h_p[965]=155;    n_p[965]=806;
  1000. h_p[966]=157;    n_p[966]=1;
  1001. h_p[967]=157;    n_p[967]=5;
  1002. h_p[968]=157;    n_p[968]=33;
  1003. h_p[969]=157;    n_p[969]=121;
  1004. h_p[970]=157;    n_p[970]=125;
  1005. h_p[971]=157;    n_p[971]=305;
  1006. h_p[972]=157;    n_p[972]=445;
  1007. h_p[973]=157;    n_p[973]=473;
  1008. h_p[974]=157;    n_p[974]=513;
  1009. h_p[975]=161;    n_p[975]=2;
  1010. h_p[976]=161;    n_p[976]=6;
  1011. h_p[977]=161;    n_p[977]=18;
  1012. h_p[978]=161;    n_p[978]=22;
  1013. h_p[979]=161;    n_p[979]=34;
  1014. h_p[980]=161;    n_p[980]=54;
  1015. h_p[981]=161;    n_p[981]=98;
  1016. h_p[982]=161;    n_p[982]=122;
  1017. h_p[983]=161;    n_p[983]=146;
  1018. h_p[984]=161;    n_p[984]=222;
  1019. h_p[985]=161;    n_p[985]=306;
  1020. h_p[986]=161;    n_p[986]=422;
  1021. h_p[987]=161;    n_p[987]=654;
  1022. h_p[988]=161;    n_p[988]=682;
  1023. h_p[989]=161;    n_p[989]=862;
  1024. h_p[990]=163;    n_p[990]=3;
  1025. h_p[991]=163;    n_p[991]=31;
  1026. h_p[992]=163;    n_p[992]=63;
  1027. h_p[993]=163;    n_p[993]=303;
  1028. h_p[994]=167;    n_p[994]=4;
  1029. h_p[995]=167;    n_p[995]=6;
  1030. h_p[996]=167;    n_p[996]=8;
  1031. h_p[997]=167;    n_p[997]=10;
  1032. h_p[998]=167;    n_p[998]=16;
  1033. h_p[999]=167;    n_p[999]=32;
  1034. h_p[1000]=167;    n_p[1000]=38;
  1035. h_p[1001]=167;    n_p[1001]=42;
  1036. h_p[1002]=167;    n_p[1002]=52;
  1037. h_p[1003]=167;    n_p[1003]=456;
  1038. h_p[1004]=167;    n_p[1004]=576;
  1039. h_p[1005]=167;    n_p[1005]=668;
  1040. h_p[1006]=169;    n_p[1006]=1;
  1041. h_p[1007]=169;    n_p[1007]=5;
  1042. h_p[1008]=169;    n_p[1008]=11;
  1043. h_p[1009]=169;    n_p[1009]=17;
  1044. h_p[1010]=169;    n_p[1010]=67;
  1045. h_p[1011]=169;    n_p[1011]=137;
  1046. h_p[1012]=169;    n_p[1012]=157;
  1047. h_p[1013]=169;    n_p[1013]=203;
  1048. h_p[1014]=169;    n_p[1014]=209;
  1049. h_p[1015]=169;    n_p[1015]=227;
  1050. h_p[1016]=169;    n_p[1016]=263;
  1051. h_p[1017]=169;    n_p[1017]=917;
  1052. h_p[1018]=173;    n_p[1018]=2;
  1053. h_p[1019]=173;    n_p[1019]=4;
  1054. h_p[1020]=173;    n_p[1020]=6;
  1055. h_p[1021]=173;    n_p[1021]=16;
  1056. h_p[1022]=173;    n_p[1022]=32;
  1057. h_p[1023]=173;    n_p[1023]=50;
  1058. h_p[1024]=173;    n_p[1024]=76;
  1059. h_p[1025]=173;    n_p[1025]=80;
  1060. h_p[1026]=173;    n_p[1026]=96;
  1061. h_p[1027]=173;    n_p[1027]=104;
  1062. h_p[1028]=173;    n_p[1028]=162;
  1063. h_p[1029]=173;    n_p[1029]=212;
  1064. h_p[1030]=173;    n_p[1030]=230;
  1065. h_p[1031]=173;    n_p[1031]=260;
  1066. h_p[1032]=173;    n_p[1032]=480;
  1067. h_p[1033]=173;    n_p[1033]=612;
  1068. h_p[1034]=175;    n_p[1034]=1;
  1069. h_p[1035]=175;    n_p[1035]=3;
  1070. h_p[1036]=175;    n_p[1036]=9;
  1071. h_p[1037]=175;    n_p[1037]=21;
  1072. h_p[1038]=175;    n_p[1038]=23;
  1073. h_p[1039]=175;    n_p[1039]=41;
  1074. h_p[1040]=175;    n_p[1040]=47;
  1075. h_p[1041]=175;    n_p[1041]=57;
  1076. h_p[1042]=175;    n_p[1042]=69;
  1077. h_p[1043]=175;    n_p[1043]=83;
  1078. h_p[1044]=175;    n_p[1044]=193;
  1079. h_p[1045]=175;    n_p[1045]=249;
  1080. h_p[1046]=175;    n_p[1046]=291;
  1081. h_p[1047]=175;    n_p[1047]=421;
  1082. h_p[1048]=175;    n_p[1048]=433;
  1083. h_p[1049]=175;    n_p[1049]=997;
  1084. h_p[1050]=179;    n_p[1050]=8;
  1085. h_p[1051]=179;    n_p[1051]=68;
  1086. h_p[1052]=179;    n_p[1052]=108;
  1087. h_p[1053]=181;    n_p[1053]=3;
  1088. h_p[1054]=181;    n_p[1054]=5;
  1089. h_p[1055]=181;    n_p[1055]=7;
  1090. h_p[1056]=181;    n_p[1056]=9;
  1091. h_p[1057]=181;    n_p[1057]=11;
  1092. h_p[1058]=181;    n_p[1058]=17;
  1093. h_p[1059]=181;    n_p[1059]=23;
  1094. h_p[1060]=181;    n_p[1060]=31;
  1095. h_p[1061]=181;    n_p[1061]=35;
  1096. h_p[1062]=181;    n_p[1062]=43;
  1097. h_p[1063]=181;    n_p[1063]=47;
  1098. h_p[1064]=181;    n_p[1064]=83;
  1099. h_p[1065]=181;    n_p[1065]=85;
  1100. h_p[1066]=181;    n_p[1066]=99;
  1101. h_p[1067]=181;    n_p[1067]=101;
  1102. h_p[1068]=181;    n_p[1068]=195;
  1103. h_p[1069]=181;    n_p[1069]=267;
  1104. h_p[1070]=181;    n_p[1070]=281;
  1105. h_p[1071]=181;    n_p[1071]=363;
  1106. h_p[1072]=181;    n_p[1072]=391;
  1107. h_p[1073]=181;    n_p[1073]=519;
  1108. h_p[1074]=181;    n_p[1074]=623;
  1109. h_p[1075]=181;    n_p[1075]=653;
  1110. h_p[1076]=181;    n_p[1076]=673;
  1111. h_p[1077]=181;    n_p[1077]=701;
  1112. h_p[1078]=185;    n_p[1078]=2;
  1113. h_p[1079]=185;    n_p[1079]=6;
  1114. h_p[1080]=185;    n_p[1080]=10;
  1115. h_p[1081]=185;    n_p[1081]=18;
  1116. h_p[1082]=185;    n_p[1082]=26;
  1117. h_p[1083]=185;    n_p[1083]=40;
  1118. h_p[1084]=185;    n_p[1084]=46;
  1119. h_p[1085]=185;    n_p[1085]=78;
  1120. h_p[1086]=185;    n_p[1086]=230;
  1121. h_p[1087]=185;    n_p[1087]=542;
  1122. h_p[1088]=187;    n_p[1088]=1;
  1123. h_p[1089]=187;    n_p[1089]=17;
  1124. h_p[1090]=187;    n_p[1090]=21;
  1125. h_p[1091]=187;    n_p[1091]=53;
  1126. h_p[1092]=187;    n_p[1092]=253;
  1127. h_p[1093]=191;    n_p[1093]=226;
  1128. h_p[1094]=193;    n_p[1094]=3;
  1129. h_p[1095]=193;    n_p[1095]=15;
  1130. h_p[1096]=193;    n_p[1096]=27;
  1131. h_p[1097]=193;    n_p[1097]=63;
  1132. h_p[1098]=193;    n_p[1098]=87;        /* 193*2^87-1 is NOT prime */
  1133. h_p[1099]=193;    n_p[1099]=135;
  1134. h_p[1100]=193;    n_p[1100]=543;
  1135. h_p[1101]=197;    n_p[1101]=2;
  1136. h_p[1102]=197;    n_p[1102]=16;
  1137. h_p[1103]=197;    n_p[1103]=20;
  1138. h_p[1104]=197;    n_p[1104]=22;
  1139. h_p[1105]=197;    n_p[1105]=40;
  1140. h_p[1106]=197;    n_p[1106]=82;
  1141. h_p[1107]=197;    n_p[1107]=112;
  1142. h_p[1108]=197;    n_p[1108]=178;
  1143. h_p[1109]=197;    n_p[1109]=230;
  1144. h_p[1110]=197;    n_p[1110]=302;
  1145. h_p[1111]=197;    n_p[1111]=304;
  1146. h_p[1112]=197;    n_p[1112]=328;
  1147. h_p[1113]=197;    n_p[1113]=374;
  1148. h_p[1114]=197;    n_p[1114]=442;
  1149. h_p[1115]=197;    n_p[1115]=472;
  1150. h_p[1116]=197;    n_p[1116]=500;
  1151. h_p[1117]=197;    n_p[1117]=580;
  1152. h_p[1118]=197;    n_p[1118]=694;
  1153. h_p[1119]=199;    n_p[1119]=1;
  1154. h_p[1120]=199;    n_p[1120]=5;
  1155. h_p[1121]=199;    n_p[1121]=7;
  1156. h_p[1122]=199;    n_p[1122]=15;
  1157. h_p[1123]=199;    n_p[1123]=19;
  1158. h_p[1124]=199;    n_p[1124]=23;
  1159. h_p[1125]=199;    n_p[1125]=25;
  1160. h_p[1126]=199;    n_p[1126]=27;
  1161. h_p[1127]=199;    n_p[1127]=43;
  1162. h_p[1128]=199;    n_p[1128]=65;
  1163. h_p[1129]=199;    n_p[1129]=99;
  1164. h_p[1130]=199;    n_p[1130]=125;
  1165. h_p[1131]=199;    n_p[1131]=141;
  1166. h_p[1132]=199;    n_p[1132]=165;
  1167. h_p[1133]=199;    n_p[1133]=201;
  1168. h_p[1134]=199;    n_p[1134]=211;        /* 199*2^221-1 is NOT prime */
  1169. h_p[1135]=199;    n_p[1135]=331;
  1170. h_p[1136]=199;    n_p[1136]=369;
  1171. h_p[1137]=199;    n_p[1137]=389;
  1172. h_p[1138]=199;    n_p[1138]=445;
  1173. h_p[1139]=199;    n_p[1139]=461;
  1174. h_p[1140]=199;    n_p[1140]=463;
  1175. h_p[1141]=199;    n_p[1141]=467;
  1176. h_p[1142]=199;    n_p[1142]=513;
  1177. h_p[1143]=199;    n_p[1143]=583;
  1178. h_p[1144]=199;    n_p[1144]=835;
  1179.  
  1180. /*
  1181.  * lucas_chk - check the lucas function on known primes
  1182.  *
  1183.  * This function tests entries in the above h_p, n_p table
  1184.  * when n_p is below a given limit.
  1185.  *
  1186.  * input:
  1187.  *    high_n    skip tests on n_p[i] > high_n
  1188.  *
  1189.  * returns:
  1190.  *    1    all is ok
  1191.  *    0    something went wrong
  1192.  */
  1193. define
  1194. lucas_chk(high_n)
  1195. {
  1196.     local i;    /* index */
  1197.     local result;    /* 0 => non-prime, 1 => prime, -1 => bad test */
  1198.     local error;    /* number of errors and bad tests found */
  1199.  
  1200.     /*
  1201.      * firewall
  1202.      */
  1203.     if (!isint(high_n)) {
  1204.         ldebug("test_lucas", "high_n is non-int");
  1205.         quit "FATAL: bad args: high_n must be an integer";
  1206.     }
  1207.  
  1208.     /*
  1209.      * scan thru the above prime table
  1210.      */
  1211.     error = 0;
  1212.     for (i=0; i < prime_cnt; ++i) {
  1213.  
  1214.         /* skip primes where h>=2^n */
  1215.         if (highbit(h_p[i]) >= n_p[i]) {
  1216.             if (dbg != 0) {
  1217.                 print "h>=2^n skip:", h_p[i]:"*2^":n_p[i]:"-1";
  1218.             }
  1219.             continue;
  1220.         }
  1221.  
  1222.         /* test the prime if it is small enough */
  1223.         if (n_p[i] <= high_n) {
  1224.  
  1225.             /* test the table value */
  1226.             result = lucas(h_p[i], n_p[i]);
  1227.  
  1228.             /* report the test */
  1229.             if (result == 0) {
  1230.                 print "ERROR, bad primality test of",\
  1231.                     h_p[i]:"*2^":n_p[i]:"-1";
  1232.                 ++error;
  1233.             } else if (result == 1) {
  1234.                 print h_p[i]:"*2^":n_p[i]:"-1 is prime";
  1235.             } else if (result == -1) {
  1236.                 print "ERROR, failed to compute v(1) for",\
  1237.                     h_p[i]:"*2^":n_p[i]:"-1";
  1238.                 ++error;
  1239.             } else {
  1240.                 print "ERROR, bogus return value:", result;
  1241.                 ++error;
  1242.             }
  1243.         }
  1244.     }
  1245.  
  1246.     /* return the full status */
  1247.     if (error == 0) {
  1248.         print "lucas_chk(":high_n:") passed";
  1249.         return 1;
  1250.     } else if (error == 1) {
  1251.         print "lucas_chk(":high_n:") failed", error, "test";
  1252.         return 0;
  1253.     } else {
  1254.         print "lucas_chk(":high_n:") failed", error, "tests";
  1255.         return 0;
  1256.     }
  1257. }
  1258.  
  1259. global lib_debug;
  1260. if (!isnum(lib_debug) || lib_debug>0) print "lucas_chk(high_n) defined";
  1261.